package db;

import beans.B_Actividad;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import beans.B_ActividadPlanAuditoria;
import conexion.Conexion;
import java.sql.Types;

/**
 *
 * @author JoseHernan
 */
public class DB_ActividadPlanAuditoria {

    public static ArrayList<B_ActividadPlanAuditoria> getActividadPlanAuditoria(int id) {
        ArrayList<B_ActividadPlanAuditoria> list = new ArrayList<B_ActividadPlanAuditoria>();
        try {
            Connection con = Conexion.getConexion();

            PreparedStatement ps;
            ResultSet rs;

            ps = con.prepareStatement(" select id, DATE_FORMAT(fecha_inicio, '%d/%m/%Y') as fecha_inicio, DATE_FORMAT(fecha_fin, '%d/%m/%Y') as fecha_fin, ubicacion, id_actividad from tbl_actividad_plan_auditoria where id = " + id);

            rs = ps.executeQuery();
            B_ActividadPlanAuditoria obj;
            B_Actividad objActividad;
            while (rs.next()) {
                obj = new B_ActividadPlanAuditoria();
                objActividad = new B_Actividad();
                //Asign values
                obj.setId(rs.getInt("id"));
                obj.setFechaInicio(rs.getString("fecha_inicio"));
                obj.setFechaFin(rs.getString("fecha_fin"));
                obj.setUbicacion(rs.getString("ubicacion"));
                objActividad.setId(rs.getInt("id_actividad"));
                obj.setObjActividad(objActividad);
                //Add to List
                list.add(obj);
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex);
        }
        return list;
    }

    public static ArrayList<B_ActividadPlanAuditoria> getListByIdPlanAuditoria() {
        ArrayList<B_ActividadPlanAuditoria> list = new ArrayList<B_ActividadPlanAuditoria>();
        try {
            Connection con = Conexion.getConexion();

            PreparedStatement ps;
            ResultSet rs;

            ps = con.prepareStatement(" select a.id, DATE_FORMAT(a.fecha_inicio, '%d/%m/%Y') as fecha_inicio, DATE_FORMAT(a.fecha_fin, '%d/%m/%Y') as fecha_fin, a.ubicacion, a.id_actividad, aa.nombre as actividad from tbl_actividad_plan_auditoria a inner join tbl_plan_auditoria pa on pa.id = a.id_plan_auditoria  inner join tbl_actividad aa on aa.id = a.id_actividad  where pa.removed = false and pa.is_active = true and a.removed = false ");

            rs = ps.executeQuery();
            B_ActividadPlanAuditoria obj;
            B_Actividad objActividad;
            while (rs.next()) {
                obj = new B_ActividadPlanAuditoria();
                objActividad = new B_Actividad();
                //Asign values
                obj.setId(rs.getInt("id"));
                obj.setFechaInicio(rs.getString("fecha_inicio"));
                obj.setFechaFin(rs.getString("fecha_fin"));
                obj.setUbicacion(rs.getString("ubicacion"));
                objActividad.setId(rs.getInt("id_actividad"));
                objActividad.setNombre(rs.getString("actividad"));
                obj.setObjActividad(objActividad);
                //Add to List
                list.add(obj);
            }
            rs.close();
            ps.close();
            con.close();
        } catch (Exception ex) {
            System.out.println(ex);
        }
        return list;
    }

    //SP CRUD
    public static String crud(B_ActividadPlanAuditoria obj, String action) {
        String result = "";
        CallableStatement cs = null;
        Connection con = Conexion.getConexion();
        try {
            cs = con.prepareCall("{call sp_crud_actividad_plan_auditoria(?,?,?,?,?,?,?,?,?)}");

            cs.registerOutParameter("p_message", Types.VARCHAR);
            cs.setString("p_action", action);
            cs.setInt("p_id", obj.getId());
            cs.setString("p_fecha_inicio", obj.getFechaInicio());
            cs.setString("p_fecha_fin", obj.getFechaFin());
            cs.setString("p_ubicacion", obj.getUbicacion());
            cs.setInt("p_id_plan_auditoria", obj.getObjPlanAuditoria().getId());
            cs.setInt("p_id_actividad", obj.getObjActividad().getId());
            cs.setString("p_user", obj.getUser());
            cs.executeUpdate();
            result = cs.getString(1);
        } catch (Exception ex) {
            result = ex.getMessage();
        } finally {
            try {
                cs.close();
                con.close();
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
        return result;
    }
}
